﻿namespace ConvertSourceToHtml.Conversion
{
    /// <summary>
    /// Interface implemented by classes providing settings for <see cref="Copier"/>.
    /// </summary>
    public interface ICopierSettings
    {
        /// <summary>
        /// Gets whether to number lines.
        /// </summary>
        bool NumberLines { get; }

        /// <summary>
        /// Gets the first line number to number lines from.
        /// </summary>
        int NumberLinesFrom { get; }

        /// <summary>
        /// Gets whether to wrap words.
        /// </summary>
        bool WrapWords { get; }

		/// <summary>
		/// Gets whether to alternate background colors.
		/// </summary>
		bool AlternateBackgroundColors { get; }

		/// <summary>
		/// Gets the amount to adjust the alternate background color.
		/// </summary>
		double AlternateBackgroundColorAdjustment { get; }

        /// <summary>
        /// Gets whether to embed styles in each line or block.
        /// </summary>
        bool EmbedStyles { get; }

        /// <summary>
        /// Gets whether to strip line breaks.
        /// </summary>
        bool StripLineBreaks { get; }

        /// <summary>
        /// Gets whether to remove indentation.
        /// </summary>
        bool RemoveIndentation { get; }

        /// <summary>
        /// Gets the tab size.
        /// </summary>
        int TabSize { get; }

        /// <summary>
        /// Gets the font list.
        /// </summary>
        string FontList { get; }

        /// <summary>
        /// Gets the font size.
        /// </summary>
        int FontSize { get; }

        /// <summary>
        /// Gets the file style.
        /// </summary>
        string FileStyle { get; }

		/// <summary>
		/// Gets the line style.
		/// </summary>
		string LineStyle { get; }

		/// <summary>
		/// Gets the line number style.
		/// </summary>
		string LineNumberStyle { get; }

		/// <summary>
        /// Gets the block style.
        /// </summary>
        string BlockStyle { get; }
	}

}
